package com.study.model.vo;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.study.util.Arith;

import java.util.Set;




/**
 * 购物车
 * @author msi-
 *
 */
public class CartBox {

	private List<Cart> map = new ArrayList<>();
	private double price;
	private Integer quatitys;
	
	

	public List<Cart> getMap() {
		return map;
	}

	public void setMap(List<Cart> map) {
		this.map = map;
	}

	/**
	 * 找到对应id的商品对象
	 * 并把它添加到集合中
	 * @param id
	 */
	public void addProduct(Good product){
		//Cart carts = map.get(product.getGooId()+"    ");
		if (map.size()<=0||map==null) {
			Cart carts = new Cart();
			carts.setGoods(product);
			carts.setQuatity(1);
			carts.setSum(product.getGooPrice().doubleValue());
			
			map.add(carts);
			System.out.println("第一次什么都没有");
		}else {
			for (int i=0;i<map.size();i++) {
				Cart carts =map.get(i);
				if (carts.getGoods().getGooId()==product.getGooId()) {
					carts.setQuatity(carts.getQuatity()+1);
					System.out.println("有则加数量...");
					break;
				}else if (i==map.size()-1) {
					carts = new Cart();
					carts.setGoods(product);
					carts.setQuatity(1);
					carts.setSum(product.getGooPrice().doubleValue());
					
					map.add(carts);
					System.out.println("没有则加商品...");
					break;
				}
			}		
		}
		
	}
	
	/**
	 * 删除购物车中一个条目的信息
	 * @param id
	 * @param cartBox
	 */
	public void deleteProduct(int id,CartBox cartBox){
		int ids=0;
		for (int i=0;i<cartBox.getMap().size();i++) {
			if (cartBox.getMap().get(i).getGoods().getGooId()==id) {
				ids =i;
				break;
			}
		}
		cartBox.getMap().remove(ids);
	}

	/**
	 * 清空购物车
	 * @param cartBox
	 */
	public void clearproduct(CartBox cartBox) {
		// TODO Auto-generated method stub
		cartBox.getMap().clear();
	}
	
	/**
	 * 修改购物车当中对应id商品的数量
	 * @param pids
	 * @param quatity
	 * @param cBox
	 */
	public void modifyproductQuatity(int pids, int quatity, CartBox cBox) {
		// TODO Auto-generated method stub
		for (int i=0;i<cBox.getMap().size();i++) {
			if (cBox.getMap().get(i).getGoods().getGooId()==pids) {
				cBox.getMap().get(i).setQuatity(quatity);
				break;
			}
		}
	}
	
	/**
	 * 修改购物车当中对应id商品的备注
	 * @param pids
	 * @param desc
	 * @param cBox
	 */
	public void modifyproductDesc(int pids, String desc, CartBox cBox) {
		System.out.println("来到了修改商品备注方法");
		// TODO Auto-generated method stub
		for (int i=0;i<cBox.getMap().size();i++) {
			if (cBox.getMap().get(i).getGoods().getGooId()==pids) {
				cBox.getMap().get(i).setDesc(desc);
				System.out.println("修改完成"+cBox.getMap().get(i));
				break;
			}
		}
		
	}
	


	/**
	 * 返回购物车总金额
	 * @return
	 */
	public double getPrice() {
		double sumprice=0;
		
		
		for (Cart cart : map) {
			sumprice = Arith.add(sumprice, cart.getSum());
		}
		BigDecimal bigDecimal = new BigDecimal(sumprice);
		double doubleValue = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
		return doubleValue;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	/**
	 * 总数量
	 * @return
	 */
	public Integer getQuatitys() {
		Integer quatity = 0;
		for (Cart cart : map) {
			quatity+=cart.getQuatity();
		}
		return quatity;
	}

	public void setQuatitys(int quatitys) {
		this.quatitys = quatitys;
	}


	
}
